iT邦幫忙

2025 iThome 鐵人賽

DAY 13
3
Modern Web

關於那些有趣的 CSS 效果系列 第 13

( Day 13 ) 純 CSS 噁心黏黏球效果

  • 分享至 

  • xImage
  •  

最近在「Try 科學」節目裡,看到使用「膠水 ( 聚乙烯醇 ) + 鹼粽粉 ( 碳酸鈉 )」,就可以製作「無毒史萊姆」,想到 N 年前我有用純 CSS 做了一個,順手寫了一篇教學分享給大家,不過我是真的有用膠水和鹼粽粉做出史萊姆,就是先把在少量水中加入鹼粽粉,然後再把鹼粽粉水加入膠水中,攪拌之後把那一坨黏黏的拿起來用手擠呀擠的,就變成史萊姆了!雖然跟 CSS 一點關係也沒有就是了...

純 CSS 噁心黏黏球效果

正文開始

這篇教學會運用進行視覺設計時的影像原理,將不同的元素套用模糊濾鏡,搭配調整整體的對比度,實現有趣的噁心黏黏球效果。

CSS 教學 - CSS 噁心黏黏球效果

黏黏球效果的影像原理

開啟具有圖層功能的影像處理軟體,建立紅球和黑球的圖層,並將紅球與黑球「套用模糊濾鏡」,這時如果修改整體的「對比度」,會發現模糊的邊緣變成不模糊,而模糊交接處也變成了類似「沾黏」的效果。

CSS 教學 - CSS 噁心黏黏球效果 - 黏黏球效果的影像原理

使用滑鼠拖拉紅球圖層,就會出現噁心黏黏球的感覺,這也是接下來要使用 CSS 模擬的效果。

CSS 教學 - CSS 噁心黏黏球效果 - 黏黏球效果的影像原理

實作噁心黏黏球

根據上述影像處理軟體的實作過程,先在 HTML 裡建立一個 div 包覆兩個 div 的元素架構,模擬群組中有兩個圖層的狀況,接著將父元素套用對比度「contrast」濾鏡,子元素套用模糊「blur」濾鏡,最後搭配動畫效果,就能做出噁心黏黏球效果,但需要注意因為對比度改變會影響顏色的表現,部分顏色將會無法顯示

<!-- HTML 程式碼 -->
<div class="effect">
  <div class="black"></div>
  <div class="red"></div>
</div>

<!-- CSS 程式碼 -->
<style>
  .effect{
    position: relative;    /* 讓子元素可以進行絕對定位 */
    margin: 20px;
    width: 250px;
    height: 200px;
    background: white;     /* 背景白色,套用對比時才有效果 */
    overflow: hidden;      /* 因為模糊程度有可能會超出邊界,隱藏超出邊界部分 */
    filter: contrast(100); /* 調整對比 */
  }
  .red, .black {
    position:absolute;     /* 絕對定位 */
    border-radius: 50%;    /* 變成圓形 */
    filter: blur(5px);     /* 套用模糊 */
  }
  .black {
    z-index: 1;
    top: 50px;
    left: 75px;
    width: 100px;
    height: 100px;
    background: black;
  }
  .red {
    z-index: 2;
    top: 75px;
    left: 0;
    width: 50px;
    height: 50px;
    background: red;
    animation: oxxo 3s infinite alternate ease-in-out; /* 套用動畫 */
  }
  @keyframes oxxo {
    0%{left: 0;}
    100%{left: 200px;}
  }
</style>

CSS 教學 - CSS 噁心黏黏球效果 - 實作噁心黏黏球

兩顆黏黏球合體

如果撰寫更多 CSS 的動畫細節,也能做出更逼真的黏黏球,下方的範例會透過一系列的動畫。

<!-- HTML 程式碼 -->
<div class="effect">
  <div class="b1"></div>
  <div class="b2"></div>
</div>

<!-- CSS 程式碼 -->
<style>
  .effect{
    position: relative;
    margin: 20px;
    width: 400px;
    height: 200px;
    background: white;
    overflow: hidden;
    filter: contrast(100);
  }
  .b1, .b2 {
    position:absolute;
    border-radius: 50%;
    filter: blur(5px);
    width: 100px;
    height: 100px;
    background: blue;
    top: 50px;
  }
  .b1 {
    left: 0;
    animation: oxxo1 6s infinite;
  }
  .b2 {
    left: 300px;
    animation: oxxo2 6s infinite;
  }

  @keyframes oxxo1 {
    0% {
      left: 0;
    }
    20% {
      top: 50px;
      width: 100px;
      height: 100px;
    }
    50% {
      top: 25px;
      left: 125px;
      width: 150px;
      height: 150px;
    }
    85% {
      top: 60px;
      left: 50px;
      width: 150px;
      height: 80px;
    }
    90% {
      width: 75px;
      height: 100px;
    }
  }

  @keyframes oxxo2 {
    0% {
      left: 300px;
    }
    20% {
      top: 50px;
      width: 100px;
      height: 100px;
    }
    50% {
      top: 25px;
      left: 125px;
      width: 150px;
      height: 150px;
    }
    85% {
      top: 60px;
      left: 200px;
      width: 150px;
      height: 80px;
    }
    90% {
      width: 75px;
      height: 100px;
    }
  }
</style>

CSS 教學 - CSS 噁心黏黏球效果 - 兩顆黏黏球合體

小結

透過 CSS 的濾鏡和動畫,有時也能做出一些有趣的效果,雖然這些效果的用途不多,但也不失為練習 CSS 特效的好方法。


上一篇
( Day 12 ) 純 CSS 製作 3D 正多面體
下一篇
( Day 14 ) 純 CSS 超連結底線動畫效果
系列文
關於那些有趣的 CSS 效果35
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言